package com.jlpay.open.jlpay.sdk.java.model.ledger.request;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.jlpay.open.jlpay.sdk.java.model.ledger.LedgerBaseRequest;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 *
 * @author dengwenning
 * @since 2024/8/30
 **/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class BalanceSplitRequest extends LedgerBaseRequest {
    /**
     * 商户号
     * 嘉联分配的商户号，
     * 示例值：849440358120001
     */
    private String mchId;

    /**
     * 商户分账单号
     * 接入方系统生成的分账请求单号，系统内部唯一，
     * 示例值：20201115141300228899
     */
    private String outOrderNo;

    /**
     * 分账总金额
     * 总分账金额，单位为分，只能为整数，
     * 示例值：2000
     */
    private Integer totalAmount;

    /**
     * 分账接收方列表
     */
    private List<Receiver> receivers;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
    public static class Receiver {
        /**
         * 接收方商户号
         * 分账接收方商户号，
         * 示例值：849440358250608
         */
        private String revMchId;

        /**
         * 分账金额
         * 分账接收方入账金额，单位为分，只能为整数，不能超过原订单支付金额及最大分账比例金额，
         * 示例值：2000
         */
        private Integer amount;

        /**
         * 分账描述
         */
        private String description;
    }

    @Override
    public String path() {
        return "/open/ledger/balance/split";
    }

}
